Jackson ডিফল্টভাবে camelCase (যেমন, firstName) ব্যবহার করে সিরিয়ালাইজ এবং ডেসিরিয়ালাইজ করে। তবে, প্রজেক্টের প্রয়োজন অনুযায়ী snake_case (যেমন, first_name) বা kebab-case (যেমন, first-name) ফরম্যাট ব্যবহারের জন্য Jackson-এ কনফিগারেশন পরিবর্তন করা সম্ভব।
Naming Strategy সেটআপ করার ধাপ
Jackson এর PropertyNamingStrategy বা নতুন PropertyNamingStrategies API ব্যবহার করে বিভিন্ন নামকরণ স্টাইল সেট করা যায়।
1. Snake Case Naming Strategy
উদাহরণ: Snake Case ব্যবহার
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
public class SnakeCaseExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// Snake Case Naming Strategy সেট করা
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.SNAKE_CASE);
User user = new User("John", "Doe");
String json = mapper.writeValueAsString(user);
System.out.println("Serialized JSON (Snake Case): " + json);
String inputJson = "{ \"first_name\": \"John\", \"last_name\": \"Doe\" }";
User deserializedUser = mapper.readValue(inputJson, User.class);
System.out.println("Deserialized User: " + deserializedUser);
}
}
class User {
private String firstName;
private String lastName;
// Constructor
public User(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// Getters
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
// toString Method
@Override
public String toString() {
return "User{firstName='" + firstName + "', lastName='" + lastName + "'}";
}
}
Output:
Serialized JSON (Snake Case): {"first_name":"John","last_name":"Doe"}
Deserialized User: User{firstName='John', lastName='Doe'}
2. Kebab Case Naming Strategy
উদাহরণ: Kebab Case ব্যবহার
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
public class KebabCaseExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// Kebab Case Naming Strategy সেট করা
mapper.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE);
User user = new User("Jane", "Doe");
String json = mapper.writeValueAsString(user);
System.out.println("Serialized JSON (Kebab Case): " + json);
String inputJson = "{ \"first-name\": \"Jane\", \"last-name\": \"Doe\" }";
User deserializedUser = mapper.readValue(inputJson, User.class);
System.out.println("Deserialized User: " + deserializedUser);
}
}
Output:
Serialized JSON (Kebab Case): {"first-name":"Jane","last-name":"Doe"}
Deserialized User: User{firstName='Jane', lastName='Doe'}
3. Camel Case Naming Strategy
Camel Case ডিফল্ট স্টাইল:
- Jackson ডিফল্টভাবে camelCase ব্যবহার করে। কোনো অতিরিক্ত কনফিগারেশন প্রয়োজন নেই।
4. Custom Naming Strategy
Custom Naming Strategy তৈরি:
আপনার নিজের কাস্টম নামকরণ স্ট্র্যাটেজি তৈরি করতে PropertyNamingStrategy এক্সটেন্ড করুন।
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
public class CustomNamingStrategy extends PropertyNamingStrategies.NamingBase {
@Override
public String translate(String propertyName) {
return "custom_" + propertyName.toLowerCase();
}
}
Custom Naming Strategy ব্যবহার:
import com.fasterxml.jackson.databind.ObjectMapper;
public class CustomNamingStrategyExample {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
// Custom Naming Strategy সেট করা
mapper.setPropertyNamingStrategy(new CustomNamingStrategy());
User user = new User("Custom", "Strategy");
String json = mapper.writeValueAsString(user);
System.out.println("Serialized JSON (Custom): " + json);
}
}
Output:
Serialized JSON (Custom): {"custom_firstname":"Custom","custom_lastname":"Strategy"}
Jackson Naming Strategy এর তুলনা
| Naming Style | Description | Example |
|---|---|---|
| Camel Case | ডিফল্ট স্টাইল | firstName |
| Snake Case | underscore (_) দিয়ে পৃথক | first_name |
| Kebab Case | হাইফেন (-) দিয়ে পৃথক | first-name |
| Custom | প্রয়োজন অনুযায়ী সংজ্ঞায়িত | custom_firstname |
নামকরণ স্ট্র্যাটেজি সেট করার সুবিধা
- Consistency: JSON ডেটার ফরম্যাট স্ট্যান্ডার্ড রাখতে সাহায্য করে।
- Interoperability: বিভিন্ন সিস্টেম বা API-এর সাথে সমন্বয় সহজ হয়।
- Customization: বিশেষ প্রয়োজন অনুযায়ী JSON ফরম্যাট তৈরি করা যায়।
Jackson এর Snake Case, Kebab Case, এবং Camel Case কনফিগারেশন সহজ এবং কার্যকর। এছাড়াও, কাস্টম নামকরণ স্ট্র্যাটেজি ব্যবহার করে প্রয়োজন অনুযায়ী JSON ফরম্যাটিং কাস্টমাইজ করা যায়।
Read more